今天的實作相當簡單,就是對內容為字串的Array做字頭排序,但要忽略article(英文小教室:這邊的article不是文章,而是「冠詞」,像是the、a、an等)。範例如下:
刪除特定冠詞:練習中是利用前面課程提過的regular exression來在字串中找出特定的pattern,這邊我們要找的就是the、a、an。
function strip(bandName) {
return bandName.replace(/^(a |the |an )/i, '').trim();
}
這裡的/^(a |the |an )/i
是找出位在開頭的a或the或an,而為了不影響字串本身就含有這些特定字母,像是Array中的"Anywhere But Here"是An開頭但他不是冠詞,所以在regular exression中我們尋找的冠詞後面其實是要空格,來找出真的冠詞。那最後的i
是代表不分大小寫,不論是The、the、A、a...都會被找出來。
那刪除的部分我們是用replace(),將上面找到的冠詞用空字串來取代,達到刪除的效果。
sort():本實作的重點,是Array的函式,可用來做字母的排序或數字大小排序,前面課堂也有用過,範例如下
bands.sort((a, b) => strip(a) > strip(b) ? 1 : -1);
這邊老師也是用前面課程常用的三元運算子,也就是?
和:
來做if else的判斷。如果刪除冠詞後的字串大於刪除冠詞後的下一個字串,就回傳1,否則回傳-1。